package com.example.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.domain.dto.RoleDTO;
import com.example.domain.entity.Role;
import com.example.domain.query.RoleQuery;
import com.example.domain.vo.MenuPermissionVO;

import java.util.List;

public interface RoleService extends IService<Role> {
    /**
     * 获取角色分页列表
     */
    IPage<Role> getRolePage(RoleQuery query);

    /**
     * 获取所有角色
     */
    List<Role> getAllRoles();

    /**
     * 根据ID获取角色
     */
    Role getRoleById(Long id);

    /**
     * 新增角色
     */
    void addRole(RoleDTO roleDTO);

    /**
     * 修改角色
     */
    void updateRole(RoleDTO roleDTO);

    /**
     * 删除角色
     */
    void deleteRole(Long id);

    /**
     * 批量删除角色
     */
    void batchDeleteRole(List<Long> ids);

    /**
     * 获取角色菜单ID列表
     */
    List<Long> getRoleMenuIds(Long roleId);

    /**
     * 分配角色菜单
     */
    void assignMenus(Long roleId, List<Long> menuIds);

    /**
     * 获取角色的菜单权限结构
     */
    List<MenuPermissionVO> getRoleMenuPermissions(Long roleId);
} 